home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Software Vault: The Gold Collection
/
Software Vault - The Gold Collection (American Databankers) (1993).ISO
/
cdr48
/
vdl020d.zip
/
VSER.DOC
< prev
next >
Wrap
Text File
|
1993-04-14
|
22KB
|
1,116 lines
{
════════════════════════════════════════════════════════════════════════════
Visionix Serial Communictions Unit (VSER)
Copyright 1991,92,93 Visionix
ALL RIGHTS RESERVED
────────────────────────────────────────────────────────────────────────────
revision history in reverse chronological order:
Initials Date Comment
──────── ──────── ────────────────────────────────────────────────────────
lpg 03/16/93 Added Source Documentation
mep 02/11/93 Cleaned up code for beta release
jrt 02/08/93 Sync with beta 0.12 release
jrt 11/21/92 Sync with beta 0.08
jrt 09/01/92 First logged revision.
────────────────────────────────────────────────────────────────────────────
}
Unit VSer;
Uses
VTypes,
VSerLow;
{────────────────────────────────────────────────────────────────────────────}
Const
sfct_None = 0;
sfct_RtsCts = 1;
sfct_XonXoff = 2;
{-----------------}
{ TError Messages }
{-----------------}
ser_None = 0;
ser_NoMemAvail = 1;
ser_NoWrite = 2;
{------------------}
{ Status Bit Flags }
{------------------}
sbf_MSRctsDelta = 0; { Clear To Send changed }
{ Delta clear to send (not reliable) }
sbf_MSRdsrDelta = 1; { Data Set Ready changed }
{ Delta data set ready (not reliable) }
sbf_MSRriDelta = 2; { Ring Indicate changed }
{ Delta data carrier detect (not reliable) }
sbf_MSRcdDelta = 3; { Carrier Detect changed }
{ always set to 1 upon return (DUMMY DCD) }
sbf_MSRcts = 4; { Clear To Send }
{ CTS - DCE sets - do not xmit until true }
sbf_MSRdsr = 5; { Data Set Ready }
{ DSR - modem is ready to be used }
sbf_MSRri = 6; { Ring Indicate }
{ RI - only on during active voltage signal }
sbf_MSRcd = 7; { Carrier Detect }
{ DCD - data carrier detect }
sbf_LSRRcvReady = 8; { Received data ready }
{ RDA - input data is available in buffer }
sbf_LSROverrun = 9; { OverRun error }
{ OVRN - the input buffer has been overrun }
sbf_LSRParity = 10; { Parity error }
{ Reserved (Parity error in BIOS INT 14h) }
sbf_LSRFrame = 11; { Framing error }
{ Reserved (Framing error in BIOS INT 14h) }
sbf_LSRBreak = 12; { Break detected }
{ Reserved (Break detect in BIOS INT 14h) }
sbf_LSRXhReady = 13; { Transmit hold register empty }
{ THRE - room is available in output buffer }
sbf_LSRXsReady = 14; { Transmit shift register empty }
{ TSRE - output buffer is empty }
sbf_LSRTimeout = 15; { Timeout (software implemented). If true, }
{ then none of the above 15 bits are valid. }
sbf_DTRReady = 16; { Data terminal ready }
{ DTR - used as off-hook. }
sbf_RTSReady = 17; { Request to send }
{ RTS - DTE sets - use when data to xmit }
Type
TSerHandle = ^TSerChan;
TError = LONGINT;
{────────────────────────────────────────────────────────────────────────────}
{────────────────────────────────────────────────────────────────────────────}
{================}
{ Serial Channel }
{================}
Procedure VSerGetCaps( Caps : PSerCaps );
Function VSerChanNew( Flags : WORD;
Var ChanHandle : TSerHandle ) : TError;
Procedure VSerChanDispose( ChanHandle : TSerHandle ) ;
{=======================}
{ Serial Channel Driver }
{=======================}
Function VSerDriverNew( Chan : TSerHandle;
Proc : TSerDriverProc;
DriverInfo : Pointer ) : TError;
Procedure VSerDriverDispose( Handle : TSerHandle ) ;
{========================}
{ Serial Channel Control }
{========================}
Function VSerActivatePort( Chan : TSerHandle;
CommParam : PCommParam ) : TError;
Function VSerDeActivatePort( Chan : TSerHandle;
CommParam : PCommParam ) : TError;
Function VSerGetCommParam( Chan : TSerHandle;
CommParam : PCommParam ) : TError;
Function VSerSetCommParam( Chan : TSerHandle;
CommParam : PCommParam ) : TError;
{--------------}
{ Flow Control }
{--------------}
Function VSerGetFlowConType( Chan : TSerHandle ) : INTEGER;
Function VSerSetFlowConType( Chan : TSerHandle;
FlowConType : INTEGER ) : TError;
Function VSerTurnSendOn( Chan : TSerHandle ) : TError;
Function VSerTurnSendOff( Chan : TSerHandle ) : TError;
Function VserTurnReceiveOn( Chan : TSerHandle ) : TError;
Function VSerTurnReceiveOff( Chan : TSerHandle ) : TError;
{--------------}
{ Break Signal }
{--------------}
Function VSerTurnBreakOn( Chan : TSerHandle ) : TError;
Function VSerTurnBreakOff( Chan : TSerHandle ) : TError;
Function VSerBreak( Chan : TSerHandle;
BreakLen : LONGINT ) : TError;
{---------------------}
{ Data Terminal Ready }
{---------------------}
Function VSerTurnDTROn( Chan : TSerHandle ) : TError;
Function VSerTurnDTROff( Chan : TSerHandle ) : TError;
{----------------}
{ Channel Status }
{----------------}
Function VSerGetStatus( Chan : TSerHandle ) : LONGINT;
Function VSerChanStatus( Chan : TSerHandle;
Bit : BYTE ) : BOOLEAN;
Function VSerCarrier( Chan : TSerHandle ) : BOOLEAN;
Function VSerRing( Chan : TSerHandle ) : BOOLEAN;
Function VSerInAvail( Chan : TSerHandle ) : BOOLEAN;
Function VSerInFull( Chan : TSerHandle ) : BOOLEAN;
Function VSerOutReady( Chan : TSerHandle ) : BOOLEAN;
Function VSerOutEmpty( Chan : TSerHandle ) : BOOLEAN;
{----------------}
{ Buffer Control }
{----------------}
Function VSerFlushOutBuff( Chan : TSerHandle ) : TError;
Function VSerPurgeOutBuff( Chan : TSerHandle ) : TError;
Function VSerPurgeInBuff( Chan : TSerHandle ) : TError;
{==============}
{ Serial Event }
{==============}
(*
Procedure VSerEventProcNew( Chan : TSerHandle;
Proc : TSerEventProc;
EventMask : WORD;
ProcInfo : Pointer;
Var ProcHandle : TSerHandle ) : TError;
Procedure VSerEventProcOff( ProcHandle : TSerHandle );
Procedure VSerEventProcOn( ProcHandle : TSerHandle );
Procedure VSerEventProcDispose( ProcHandle : TSerHandle );
*)
{====================}
{ Serial Channel I/O }
{====================}
Procedure VSerWriteCh( Chan : TSerHandle;
OutCh : CHAR );
Function VSerWriteChEx( Chan : TSerHandle;
OutCh : CHAR ) : TError;
Function VSerWriteBlock( Chan : TSerHandle;
BuffSize : LONGINT;
BuffPtr : Pointer;
Var XFerCount : LONGINT ) : TError;
Function VSerWriteSt( Chan : TSerHandle;
S : STRING ) : TError;
Function VSerReadCh( Chan : TSerHandle ) : CHAR;
Function VSerReadChEx( Chan : TSerHandle;
Var Ch : CHAR ) : TError;
Function VSerReadBlock( Chan : TSerHandle;
BuffSize : LONGINT;
BuffPtr : Pointer;
Var XFerCount : LONGINT ) : TError;
{────────────────────────────────────────────────────────────────────────────}
{────────────────────────────────────────────────────────────────────────────}
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Procedure VSerGetCaps( Caps : PSerCaps );
[PARAMETERS]
Caps Pointer to ?
[RETURNS]
(None)
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Function VSerChanNew( Flags : WORD;
Var ChanHandle : TSerHandle ) : TError;
[PARAMETERS]
Flags ?
ChanHandle ?
[RETURNS]
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Procedure VSerChanDispose( ChanHandle : TSerHandle ) ;
[PARAMETERS]
ChanHandle ?
[RETURNS]
(None)
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Function VSerDriverNew( Chan : TSerHandle;
Proc : TSerDriverProc;
DriverInfo : Pointer ) : TError;
[PARAMETERS]
Chan ?
Proc Pointer to Serial Device Driver Procedure
DriverInfo Pointer to Device Driver Information
[RETURNS]
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Procedure VSerDriverDispose( Handle : TSerHandle ) ;
[PARAMETERS]
Handle ?
[RETURNS]
(None)
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Function VSerActivatePort( Chan : TSerHandle;
CommParam : PCommParam ) : TError;
[PARAMETERS]
Chan ?
CommParam ?
[RETURNS]
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Function VSerDeActivatePort( Chan : TSerHandle;
CommParam : PCommParam ) : TError;
[PARAMETERS]
Chan ?
CommParam ?
[RETURNS]
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Function VSerGetCommParam( Chan : TSerHandle;
CommParam : PCommParam ) : TError;
[PARAMETERS]
Chan ?
CommParam ?
[RETURNS]
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Function VSerSetCommParam( Chan : TSerHandle;
CommParam : PCommParam ) : TError;
[PARAMETERS]
Chan ?
CommParam ?
[RETURNS]
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Function VSerGetFlowConType( Chan : TSerHandle ) : INTEGER;
[PARAMETERS]
Chan ?
[RETURNS]
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Function VSerSetFlowConType( Chan : TSerHandle;
FlowConType : INTEGER ) : TError;
[PARAMETERS]
Chan ?
FlowconType ?
[RETURNS]
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Function VSerTurnSendOn( Chan : TSerHandle ) : TError;
[PARAMETERS]
Chan ?
[RETURNS]
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Function VSerTurnSendOff( Chan : TSerHandle ) : TError;
[PARAMETERS]
Chan ?
[RETURNS]
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Function VserTurnReceiveOn( Chan : TSerHandle ) : TError;
[PARAMETERS]
Chan ?
[RETURNS]
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Function VSerTurnReceiveOff( Chan : TSerHandle ) : TError;
[PARAMETERS]
Chan ?
[RETURNS]
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Function VSerTurnBreakOn( Chan : TSerHandle ) : TError;
[PARAMETERS]
Chan ?
[RETURNS]
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Function VSerTurnBreakOff( Chan : TSerHandle ) : TError;
[PARAMETERS]
Chan ?
[RETURNS]
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Function VSerBreak( Chan : TSerHandle;
BreakLen : LONGINT ) : TError;
[PARAMETERS]
Chan ?
BreakLen ?
[RETURNS]
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Function VSerTurnDTROn( Chan : TSerHandle ) : TError;
[PARAMETERS]
Chan ?
[RETURNS]
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Function VSerTurnDTROff( Chan : TSerHandle ) : TError;
[PARAMETERS]
Chan ?
[RETURNS]
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Function VSerGetStatus( Chan : TSerHandle ) : LONGINT;
[PARAMETERS]
Chan ?
[RETURNS]
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Function VSerChanStatus( Chan : TSerHandle;
Bit : BYTE ) : BOOLEAN;
[PARAMETERS]
Chan ?
Bit ?
[RETURNS]
Whether the ....
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Function VSerCarrier( Chan : TSerHandle ) : BOOLEAN;
[PARAMETERS]
Chan ?
[RETURNS]
Whether a Carrier has been Established (TRUE=Carrier Established)
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Function VSerRing( Chan : TSerHandle ) : BOOLEAN;
[PARAMETERS]
Chan ?
[RETURNS]
Whether the ? is Ringing (TRUE=Ringing)
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Function VSerInAvail( Chan : TSerHandle ) : BOOLEAN;
[PARAMETERS]
Chan ?
[RETURNS]
Whether the ? is Available (TRUE=Available)
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Function VSerInFull( Chan : TSerHandle ) : BOOLEAN;
[PARAMETERS]
Chan ?
[RETURNS]
Whether the ? is Full (TRUE=Full)
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Function VSerOutReady( Chan : TSerHandle ) : BOOLEAN;
[PARAMETERS]
Chan ?
[RETURNS]
Whether the ? is Ready (TRUE=Ready)
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Function VSerOutEmpty( Chan : TSerHandle ) : BOOLEAN;
[PARAMETERS]
Chan ?
[RETURNS]
Whether the ? is Empty (TRUE=Empty)
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Function VSerFlushOutBuff( Chan : TSerHandle ): TError;
[PARAMETERS]
Chan ?
[RETURNS]
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Function VSerPurgeOutBuff( Chan : TSerHandle ): TError;
[PARAMETERS]
Chan ?
[RETURNS]
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Function VSerPurgeInBuff( Chan : TSerHandle ): TError;
[PARAMETERS]
Chan ?
[RETURNS]
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Procedure VSerWriteCh( Chan : TSerHandle;
OutCh : CHAR );
[PARAMETERS]
Chan ?
OutCh Character to Write
[RETURNS]
(None)
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Function VSerWriteChEx( Chan : TSerHandle;
OutCh : CHAR ) : TError;
[PARAMETERS]
Chan ?
OutCh Character to Write
[RETURNS]
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Function VSerWriteBlock( Chan : TSerHandle;
BuffSize : LONGINT;
BuffPtr : Pointer;
Var XFerCount : LONGINT ): TError;
[PARAMETERS]
Chan ?
BuffSize Data Buffer Size
BuffPtr Pointer to Data Buffer
XFerCount VAR Returned Number of Bytes Written
[RETURNS]
Function : ?
(VAR : [XFerCount] Number of Bytes Written)
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Function VSerWriteSt( Chan : TSerHandle;
S : STRING ): TError;
[PARAMETERS]
Chan ?
S String to Write
[RETURNS]
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Function VSerReadCh( Chan : TSerHandle ): CHAR;
[PARAMETERS]
Chan ?
[RETURNS]
Character Read
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Function VSerReadChEx( Chan : TSerHandle;
Var Ch : CHAR ): TError;
[PARAMETERS]
Chan ?
Ch VAR Returned Character Read
[RETURNS]
Function : ?
(VAR : [Ch] Character Read)
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Function VSerReadBlock( Chan : TSerHandle;
BuffSize : LONGINT;
BuffPtr : Pointer;
Var XFerCount : LONGINT ): TError;
[PARAMETERS]
Chan ?
BuffSize Data Buffer Size
BuffPtr Pointer to Data Buffer
XFerCount VAR Returned Number of Bytes Transfered
[RETURNS]
Function : ?
(VAR : [XFerCount] Number of Bytes Transfered)
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]